package br.com.sigeden.bean;

import br.com.sigeden.dao.DenunciaDAO;
import br.com.sigeden.model.Categoria;
import br.com.sigeden.model.Denuncia;
import br.com.sigeden.model.Entidade;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import org.primefaces.event.map.MarkerDragEvent;
import org.primefaces.model.map.DefaultMapModel;
import org.primefaces.model.map.LatLng;
import org.primefaces.model.map.MapModel;
import org.primefaces.model.map.Marker;

/**
 *
 * @author David Amom <davidamom@gmail.com>
 */
@ManagedBean
@SessionScoped
public class DenunciaBean {

    private Denuncia denuncia = new Denuncia();
    private DenunciaDAO denunciaDAO = new DenunciaDAO();
    private MapModel draggableModel;

    public DenunciaBean() {
    }

    public MapModel getDraggableModel() {
        return draggableModel;
    }

    @PostConstruct
    public void init() {
        draggableModel = new DefaultMapModel(); //Shared coordinates  
        LatLng coord1 = new LatLng(-15.8035, -47.9275);
        //LatLng coord2 = new LatLng(-15.803578543470065, -47.92743802070618);

        //Draggable  
        draggableModel.addOverlay(new Marker(coord1, "Arraste este marcador para o local do evento"));
        //draggableModel.addOverlay(new Marker(coord2, "Ataturk Parki"));


        for (Marker marker : draggableModel.getMarkers()) {
            marker.setDraggable(true);
        }
    }

    public void onMarkerDrag(MarkerDragEvent event) {

        denuncia.setLatitude(Double.toString(event.getMarker().getLatlng().getLat()));
        denuncia.setLongitude(Double.toString(event.getMarker().getLatlng().getLng()));
        //addMessage(new FacesMessage(FacesMessage.SEVERITY_INFO, "Marker Dragged", "Lat:" + event.getMarker().getLatlng().getLat() + ", Lng:" + event.getMarker().getLatlng().getLng()));
    }

    public Denuncia getDenuncia() {
        return denuncia;
    }

    public void setDenuncia(Denuncia denuncia) {
        this.denuncia = denuncia;
    }

    public List<Denuncia> listarDenuncias() {
        return denunciaDAO.listarDenuncias();
    }

    public String adicionarDenuncia() {
        denunciaDAO.adicionarDenuncia(denuncia);
        denuncia.setDescricao(null);
        return null;
    }

    public String removerDenuncia(Denuncia denuncia) {
        denunciaDAO.removerDenuncia(denuncia);
        return null;
    }

    public String carregarDenuncia(Denuncia denuncia) {
        this.denuncia = denuncia;
        return "atualizarDenuncia";
    }

    public String atualizarDenuncia() {
        denunciaDAO.atualizarDenuncia(this.denuncia);
        this.denuncia.setDescricao(null);
        return "administracao";
    }
    
    public String incrementarAfirmacoes(){
        System.out.println("passou aqui");
        denunciaDAO.incrementarAfirmacoes(denuncia);
        return "index";
    }
}
